package com.ruoyi.common.utils;

import java.io.*;

public class FFmpegExample {
    // 提升图像分辨率和清晰度的综合方法
    // 提升图像分辨率和清晰度的综合方法
    public static void enhanceImage(String inputImage, String outputImage, int width, int height, double sharpness) throws IOException {
        // 构建 FFmpeg 命令
        // scale：提升分辨率，unsharp：增加锐度，flags=lanczos：使用 Lanczos 插值算法以保留更多细节
        String command = String.format("ffmpeg -i %s -vf scale=%d:%d:flags=lanczos,unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=%.2f -q:v 1 %s",
                inputImage, width, height, sharpness, outputImage);

        // 执行命令
        Process process = Runtime.getRuntime().exec(command);
        try {
            int exitCode = process.waitFor();
            if (exitCode == 0) {
                System.out.println("Image has been enhanced successfully.");
            } else {
                System.err.println("Error during image enhancement.");
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }


    public static void main(String[] args) {
        try {
            // 输入图片路径
            String inputImage = "E:\\物流\\传送带\\传送带.jpg";
            // 输出图片路径
            String outputImage = "E:\\物流\\output_enhanced.jpg";
            // 提升的目标分辨率 (宽 x 高)
            int width = 768;
            int height = 768;
            // 锐化强度 (1.0 - 2.0 更明显的锐化)
            double sharpness = 2.0;

            // 调用增强方法
            enhanceImage(inputImage, outputImage, width, height, sharpness);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
